#include <cstdlib>
#include <cstdio>

#include "Plateau.H"
#include "Case.H"

Case Plateau [ NB_CASES ];


void initPlateau()
{
    int c;
    for(c=0;c<32;c++)
    {
        switch(c%8)
        {
            case 1 :
            case 3 :
            case 5 :
            case 7 : initCase(Plateau[c],1,c);
            break;
            case 6 : initCase(Plateau[c],2,c);
            break;
            case 2 :
            {
                switch(c%16)
                {
                    case 2 : initCase(Plateau[c],4,c);
                    break;
                    case 10 : initCase(Plateau[c],3,c);
                }
            }
            break;
            case 4 :
            {
                switch(c%16)
                {
                    case 4 : initCase(Plateau[c],7,c);
                    break;
                    case 12 : initCase(Plateau[c],6,c);
                }
            }
            break;
            default :
            {
                switch(c)
                {
                    case 0 : initCase(Plateau[c],5,c);
                    break;
                    case 8 : initCase(Plateau[c],9,c);
                    break;
                    case 16 : initCase(Plateau[c],10,c);
                    break;
                    case 24 : initCase(Plateau[c],8,c);
                    break;
                }
            }
        }
    }
}

Case casePlateau(int p)
{
    Case c;
    c.position=p;
    switch(p%8)
    {
        case 1 :
        case 3 :
        case 5 :
        case 7 : c.type=1;
                 return c;
        break;
        case 6 : c.type=2;
                 return c;
        break;
        case 2 :
        {
            switch(p%16)
            {
                case 2 : c.type=4;
                         return c;
                break;
                case 10 : c.type=3;
                          return c;
            }
        }
        break;
        case 4 :
        {
            switch(p%16)
            {
                case 4 : c.type=7;
                         return c;
                break;
                case 12 : c.type=6;
                          return c;
            }
        }
        break;
        default :
        {
            switch(p)
            {
                case 0 : c.type=5;
                         return c;
                break;
                case 8 : c.type=9;
                         return c;
                break;
                case 16 : c.type=10;
                          return c;
                break;
                case 24 : c.type=8;
                          return c;
                break;
            }
        }
    }
    return c;
}
